#include <iostream>
using namespace std;
#include "LecteurProgramme.h"
#include "EntierContraint.h"

int main() {

	EntierContraint menu(0, 2);


	do {

		cout << ">--[PanoramiX-Code]----------------------------------" << endl;
		cout << ">--[Anthony Calabro]-[José-Paul Dominguez]-----------" << endl;
		cout << ">--[Le Java, c'est caca]-----------------------------" << endl;
		cout << ">----------------------------------------------------" << endl;
		cout << ">--[MENU :]------------------------------------------" << endl;
		cout << ">--[1 :]--[Interpréter un programme Pano-X]----------" << endl;
		cout << ">--[2 :]--[Pano-X to C++]----------------------------" << endl;
		cout << ">--[0 :]--[Quitter]----------------------------------" << endl;
		cout << ">----------------------------------------------------" << endl;
		menu.saisir(">--[Choix :]--> ");


		switch ( menu.getValeur() ) {
			case 1 : {
				char nomFich[255];
				cout << ">--[Fichier à interpréter :]--> ";
				cin.ignore(256, '\n');
				cin.getline(nomFich, sizeof(nomFich));
				LecteurProgramme lp(nomFich);
				cout << endl << ">--[Pano-x]-->" << nomFich << endl;
				lp.analyse();
				cout << endl << "Arbre Abstrait : " << endl;
				cout         << "================"  << endl;
				lp.getArbre()->afficher();
				cout << endl << "Table des symboles avant evaluation : " << lp.getTs();
				cout << endl << "Evaluation de l'arbre (interpretation)..." << endl;
				lp.getArbre()->getValeur();
				cout << endl << "Table des symboles apres evaluation : " << lp.getTs();
				cout << ">--[Fin interprétation]------------------------------" << endl << endl;
				}
				break;
			case 2 : {
				char nomFich[255];
				cout << ">--[Fichier à transformer :]--> ";
				cin.ignore(256, '\n');
				cin.getline(nomFich, sizeof(nomFich));
				LecteurProgramme lp(nomFich);
				cout << endl << ">--[Pano-x]-->" << nomFich << "_to_" << "C++" << endl;
				cout << "Analyse... ";
				lp.analyse();
				cout << "Association des valeurs... ";
				lp.getArbre()->getValeur();
				cout << endl << "Transformation en C++..." << endl;
				cout << lp.getC() << endl;
				}
				break;
			default :
				cout << endl << ">--[PanoramiX-Code]----------------------------------" << endl;
				cout << ">--[Anthony Calabro]-[José-Paul Dominguez]-----------" << endl;
				cout << ">--[Le Java, c'est caca]-----------------------------" << endl;
				cout << "A bientôt !" << endl;
				exit(0);
		}


	} while ( menu.getValeur() );



	return 0;
}
